package org.jeecg.modules.simulator.model.train.action;

import java.time.LocalTime;
import java.util.Date;

/**
 * @program: gp
 * @description:
 * @author: lydms
 * @create: 2024-08-07 09:35
 **/
public interface TrainActionRecorder {

    /**
     * @description:任务编码
     *
     * @author: renzhg
     * @date: 2024/7/29 8:47
     **/
    public String getId();
    public void setId(String id);


    public  Boolean isFinished();
    public void setFinished(Boolean finished);




    public void setTableItemName(String name);
    public String getTableItemName();

    public void setTableItemId(String id);
    public String getTableItemId();

    public String getActionName();

    /**
     * @description:记录表给定速度，可以通过速度，时间计算距离
     * 在生成记录的时候，可以根据给定站点的偏移度，计算列车的速度
     *
     * @author: renzhg
     * @date: 2024/8/5 10:04
     **/
    public Long getPlanSpeed();
    public void setPlanSpeed(long speed);


    /**
     * @description: 是否是最后一个动作
     *
     * @author:  renzhg
     * @date:  2024/9/12 11:20
     **/
    public boolean isLast();
    public void setLast(boolean last);




    /**
     * @description: 用来记录当前的实际速度
     * @author:  renzhg
     * @date:  2024/8/8 14:14
     * @param:
     * @return:
     * @return: long
     **/

    public void setActualSpeed(long speed);
    public Long getActualSpeed();
    /**
     * @description:动作地点名称，比如
     *
     * @author: renzhg
     * @date: 2024/7/30 9:09
     **/

    public String getName();
    public void setName(String name);



    /**
     * @description:命令类型:运行，停止
     *
     * @author: renzhg
     * @date: 2024/7/29 8:53
     **/

    public String getAction();
    public void setAction(String action);

    /**
     * @description:附属类型，命令发出后，列车在什么地方停止，比如站点，这个需要考虑
     *
     * @author: renzhg
     * @date: 2024/7/29 8:56
     **/
    public String getAffiliateType();
    public void setAffiliateType(String affiliateType);




    /**
     * @description:动作开始时间,尤其在启动开车的时候需要
     *
     * @author: renzhg
     * @date: 2024/7/29 8:59
     **/
    public LocalTime getStartTime();
    public void setStartTime(LocalTime  startTime);

    /**
     * @description:结束时间
     *
     * @author: renzhg
     * @date: 2024/7/29 9:01
     **/
    public LocalTime getEndTime();
    public void setEndTime(LocalTime endTimeTime);

    /**
     * @description:动作时长
     *
     * @author: renzhg
     * @date: 2024/7/29 9:03
     **/
    public Long getDuring();
//    public void setDuring(int during);

    /**
     * @description:动作是否发出
     *
     * @author: renzhg
     * @date: 2024/7/29 9:07
     **/
    public Boolean isSend();
    public void setSend(boolean send);

    /**
     * @description:动作执行状态，正在执行，成功，失败
     *
     * @author: renzhg
     * @date: 2024/7/29 9:17
     **/
    public ExecutionStatus getExecutionStatus();
    public void setExecutionStatus(ExecutionStatus executionStatus);







}
